# Структурный шаблон проектирования ("Адаптер на уровне классов")
# Позволяет объектам с не совместимыми интерфейсами работать вместе


import abc


class IScales(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def get_weight(self) -> float:
        pass

    @abc.abstractmethod
    def adjust(self):
        pass


class RussianScales(IScales):
    def __init__(self, cw: float):
        self.__currnt_weight = cw

    def get_weight(self) -> float:
        return self.__currnt_weight

    def adjust(self):
        print('Регулировка российских весов', end='')


class BritishScales:
    def __init__(self, cw: float):
        self.__currnt_weight = cw

    def get_weight(self) -> float:
        return self.__currnt_weight

    def adjust(self):
        print("Регулировка британских весов")


class AdapterForBritishScales(BritishScales, IScales):
    def __init__(self, cw: float):
        super().__init__(cw)

    def get_weight(self) -> float:
        return super().get_weight() * 0.453

    def adjust(self):
        super().adjust()
        print(' в методе регулировки adjust() адаптера')


if __name__ == "__main__":
    rScales: IScales = RussianScales(55)
    bScales: IScales = AdapterForBritishScales(55)

    print(rScales.get_weight())
    print(bScales.get_weight())
    rScales.adjust()
    bScales.adjust()

# 55
# 24.915
# Регулировка российских весовРегулировка британских весов
#  в методе регулировки adjust() адаптера
